package com.yeyks.commonReference.service.config;

import com.yeyks.common.dto.DoubleDanConfig;
import com.yeyks.common.dto.NewZeroParentRate;
import com.yeyks.common.dto.ZeroParentRate;
import com.yeyks.common.dto.card.MemberCardRate;
import com.yeyks.common.dto.mq.GrabTheOrderSuccessWebsocketMessage;
import com.yeyks.common.utils.arithmetic.Probability;
import com.yeyks.config.dal.domain.Config;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Date;
import java.util.List;
import java.util.Map;


/**
 * <p>
 * 动态配置数据表 服务类
 * </p>
 *
 * @author yun
 * @since 2019-06-25
 */
public interface ConfigService extends IService<Config> {

    String getValue(String key);


    Object getValueWithDefault(String key,Object defaultValue);

    /**
     * 获取C2B的搜索条件
     *
     * @return
     */
    Map<String, Object> getC2BConditionMap();

    /**
     * 获取VIP的搜索条件
     *
     * @return
     */
    Map<String, Object> getVipConditionMap();

    /**
     * 获取推广佣金比率
     *
     * @return
     */
    List<Probability> getProbability();

    /**
     * 获取卡号规则
     *
     * @param cardType 1vip，2精选
     * @return
     */
    String getCardRule(Integer cardType);

    /**
     * 查询手机号是否在白名单中
     *
     * @param phone
     * @return
     */
    boolean checkWhiteList(String phone);

    /**
     *  检查日期是否是节假日
     * @param date
     * @return
     */
    boolean checkDateIsHoliday(String date,String holidays);

    /**
     * 通过用户查询用户手机号是否在白名单中（true代表在，false代表不在）
     *
     * @param userId
     * @return
     */
    boolean checkWhiteList(Integer userId);

    /**
     * 通过用户查询用户手机号是否在白名单中（true代表在，false代表不在）
     * 一共5个
     * key为30000，value为1
     * key为20000，value为1
     * key为10000，value为6
     * key为5000，value为6
     * key为total，value为券的总个数
     *
     * @return
     */
    Map<String, Integer> getGiftCouponAmount();

    /**
     * 获取计算酒店账户余额的开始时间
     *
     * @return
     */
    Date getHotelDate();

    /**
     * 酒店抢单提示消息
     */
    GrabTheOrderSuccessWebsocketMessage getHotelRobOrderMsg();

    /**
     * c2b自动抢单个数
     *
     * @return
     */
    Integer c2bAutoRobAmount();

    /**
     * c2b搜索个数
     *
     * @return
     */
    Integer c2bSearchAmount();

    /**
     * 获取抢单超时的时间的时间(毫秒)
     *
     * @return
     */
    Integer getRobOverTime();

    /**
     * 获取小vip佣金比率
     *
     * @return
     */
    MemberCardRate getMiniRate();

    /**
     * 获取0元推广的佣金比率
     *
     * @return
     */
    ZeroParentRate getZeroRate();

    /**
     * 获取0元推广的佣金（单位分）
     *
     * @return
     */
    NewZeroParentRate getNewZeroParentRate();

    /**
     * 学生推广佣金名单
     *
     * @return
     */
    List<String> getNewZeroUserTypeStudent();

    /**
     * 双旦活动时间
     *
     * @return
     */
    DoubleDanConfig getDoubleDanConfig();
}
